home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 24
/
Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso
/
Aminet
/
dev
/
c
/
AmiVoGL_MDEV.lha
/
drivers
/
ibmpc
/
hgcpaddr.asm
< prev
next >
Wrap
Assembly Source File
|
1991-07-18
|
1KB
|
60 lines
TITLE HGCPADDR - Return video buffer address of a pixel.
NAME HGCPADDR
PAGE 55,132
COMMENT $
Name: HGCPADDR
Function: Determine buffer address of pixel in 720x348 Hercules graphics
Caller: AX = y co-ord (0-347)
BX = x co-ord (0-719)
Returns:
AH = bit mask
BX = byte offset in buffer
CL = number of bits to shift left
ES = video buffer segment
$
BytesPerLine EQU 90
extrn __buffer_segment:word
HERC_TEXT SEGMENT byte public 'CODE'
ASSUME cs:HERC_TEXT
PUBLIC hgcpaddr
hgcpaddr PROC far
mov cl,bl ; CL = low-order byte of x
shr ax,1 ; AX = y/2
rcr bx,1 ; BX = 8000h*(y&1) + x/2
shr ax,1 ; AX = y/4
rcr bx,1 ; BX = 4000h*(y&3) + x/4
shr bx,1 ; BX = 2000h*(y&3) + x/8
mov ah,BytesPerLine
mul ah ; AX = BytesPerLine*(y/4)
add bx,ax ; BX = 2000h*(y&3) + x/8
; + BytesPerLine*(y/4)
; add bx,OriginOffset ; BX = byte offset in video buffer
; mov ax,VideoBufferSeg
mov ax,__buffer_segment
mov es,ax ; ES:BX = byte address of pixel
and cl,7 ; CL = x & 7
xor cl,7 ; CL = number of bits to shift left
mov ah,1 ; AH unshifted bit mask
ret
hgcpaddr endp
HERC_TEXT ends
end